home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 7 / Night Owl Shareware (NOPV7)(Night Owl Publisher Inc.)(1992).bin / 038a / bash1_12.arj / BASH1-12.TAR / bash-1.12 / examples / functions / ksh-compat.~1~ < prev    next >
Text File  |  1991-12-31  |  3KB  |  154 lines

  1. #
  2. # ksh-compat -- functions and aliases to provide the beginnings of a ksh 
  3. #            environment for bash.
  4. #
  5. # Chet Ramey
  6. # chet@ins.CWRU.Edu
  7. #
  8. #
  9. # These are definitions for the ksh compiled-in `exported aliases'.  There
  10. # are others, but we already have substitutes for them: "history", "type",
  11. # and "hash".
  12. #
  13. alias r="fc -e -"
  14. alias functions="typeset -f"
  15. alias integer="typeset -i"
  16. alias nohup="nohup "
  17. alias true=":"
  18. alias false="let 0"
  19.  
  20. #
  21. # An almost-ksh compatible `whence' command.  This is as hairy as it is 
  22. # because of the desire to exactly mimic ksh (whose behavior was determined
  23. # empirically).
  24. # This depends somewhat on knowing the format of the output of the bash
  25. # `builtin type' command.
  26. #
  27.  
  28. whence ()
  29. {
  30.   local vflag
  31.   local path
  32.  
  33.   vflag=
  34.   path=
  35.  
  36.   if [ "$#" = "0" ]; then
  37.     echo "whence: argument expected"
  38.     return 1
  39.   fi
  40.  
  41.   case "$1" in
  42.     -v) vflag=1
  43.       shift 1
  44.       ;;
  45.     -*) echo "whence: bad option: $1"
  46.       return 1
  47.       ;;
  48.     *) ;;
  49.   esac
  50.  
  51.   if [ "$#" = "0" ]; then
  52.     echo "whence: bad argument count"
  53.     return 1
  54.   fi
  55.  
  56.   for cmd; do
  57.     if [ "$vflag" ]; then
  58.       echo $(builtin type $cmd | sed 1q)
  59.     else
  60.       path=$(builtin type -path $cmd)
  61.  
  62.       if [ "$path" ]; then
  63.         echo $path
  64.       else
  65.         case "$cmd" in
  66.           /*) echo ""
  67.             ;;
  68.           *)
  69.             case "$(builtin type -type $cmd)" in
  70.               "") echo ""
  71.                 ;;
  72.               *) echo "$cmd"
  73.                 ;;
  74.             esac
  75.           ;;
  76.         esac
  77.       fi
  78.     fi
  79.   done
  80.   return 0
  81. }
  82.  
  83. #
  84. # For real ksh homeboy fanatics, redefine the `type' builtin with a ksh
  85. # version.
  86. #
  87. #type()
  88. #{
  89. #    whence -v "$*"
  90. #}
  91.  
  92. cd ()
  93. {
  94.   case $# in
  95.     0) builtin cd "$HOME" ;;
  96.     1) builtin cd "$@" ;;
  97.     2) old="$1"
  98.         new="$2"
  99.         dir=$(echo "$PWD" | sed "s:$old:$new:g")
  100.         case "$dir" in
  101.         "$PWD")    echo "bash: cd: bad substitution" >&2
  102.             ;;
  103.         *)    echo "$dir"
  104.             builtin cd "$dir"
  105.             ;;
  106.         esac
  107.         ;;
  108.     *)    echo "cd: wrong arg count" >&2
  109.         ;;
  110.     esac
  111. }
  112.  
  113. #
  114. # ksh print emulation
  115. #
  116. #    print [-Rnprsu[n]] [arg ...]
  117. #
  118. #    -    end of options
  119. #    -R    BSD-style -- only accept -n, no escapes
  120. #    -n    do not add trailing newline
  121. #    -p    no-op (no coprocesses)
  122. #    -r    no escapes
  123. #    -s    no-op (print to the history file)
  124. #    -u n    redirect output to fd n
  125. #
  126.  
  127. print()
  128. {
  129.     local eflag=-e
  130.     local nflag=
  131.     local fd=1
  132.  
  133.     OPTIND=1
  134.     while getopts "Rnprsu:" c
  135.     do
  136.         case $c in
  137.         R)    eflag=
  138.             ;;
  139.         r)    eflag=
  140.             ;;
  141.         n)    nflag=-n
  142.             ;;
  143.         u)    redir=">&$OPTARG"
  144.             fd=$OPTARG
  145.             ;;
  146.         p|s)    ;;
  147.         esac
  148.     done
  149.     shift $[ $OPTIND - 1 ]
  150.  
  151.     echo $eflag $nflag "$@" >&$fd
  152. }
  153.